In digital electronics, the data, also called information or messages, are stored and transmitted in the form of binary values on bits. During storage or transmission, these values may be corrupted.
To maintain the level of integrity of the data or to increase production efficiency, some electronic systems use error-correcting codes, called ECCs. In an electronic circuit, the errors that appear in the data may be temporary or permanent. The temporary errors are produced by environmental interferences or are generated by the radioactivity of certain impurities in the material of the electronic circuits. The permanent errors are due to defects in the physical structure of the circuit occurring in production or as a result of the aging of the circuit.
In the systems that use an ECC protection, the data are encoded. The encoding operation, also called coding operation, results in code words containing said data to which are added check bits calculated according to a matrix selected for this coding. This matrix is usually called parity matrix.
In a second stage, the coded word is decoded to produce the original datum. For this, a check vector, called syndrome, is calculated. This syndrome is used to detect and correct potential errors appearing in a given code word. If no error is detected, the coded word is considered correct. If an error that can be corrected is detected, the coded word is corrected. Finally, if an uncorrectable error is detected, this is indicated.
For the storage or transmission of data, codes that have a SECDED (Single Error Correction, Double Error Detection) capability are normally used. As their name indicates, these codes are capable of correcting an error and of detecting a multiple error affecting two bits of a code word. A multiple error is used hereinafter in the description to designate an error affecting several bits of one and the same code word. The codes that allow for the correction of multiple errors are very costly in terms of computation and are rarely used to make the data storage reliable for example.
The use of a SECDED code involves a number of types of operations, notably computation, monitoring, manipulation and storage operations. Implementing such codes consequently consumes considerable circuit surface area, electrical energy/power and computation performance. It is therefore necessary to have powerful error-correcting codes and suitable coding and decoding devices.